import Realm from 'realm'

/**
 * 书签项 Realm 模型类
 * 存储单个书签，通过 folder_id 关联到文件夹
 */
export class BookmarkItemModel extends Realm.Object<BookmarkItemModel> {
  _id!: Realm.BSON.ObjectId
  /** 兼容渲染层的数值ID（自增） */
  id?: number
  /** 书签 URL */
  link!: string
  /** 标题 */
  title!: string
  /** 所属文件夹ID（null表示根目录） */
  folder_id?: Realm.BSON.ObjectId | null
  /** 同级顺序 */
  sort?: number | null
  /** Chrome/Edge 节点 guid（可用于去重/导入映射） */
  guid?: string | null
  /** 数据来源（chrome/edge/manual） */
  source?: string | null
  /** 是否已同步到服务器 */
  is_synced!: boolean
  /** 服务器端ID（用于同步） */
  server_id?: string | null
  frequency?: number
  /** 创建时间 */
  created_at!: Date
  /** 更新时间 */
  updated_at!: Date
  favicon?: string | null

  static schema: Realm.ObjectSchema = {
    name: 'BookmarkItem',
    primaryKey: '_id',
    properties: {
      _id: 'objectId',
      id: { type: 'int', optional: true, indexed: true },
      link: { type: 'string', indexed: true },
      title: 'string',
      folder_id: { type: 'objectId', optional: true, indexed: true },
      sort: { type: 'int', optional: true },
      guid: 'string?',
      source: 'string?',
      is_synced: { type: 'bool', default: false },
      server_id: 'string?',
      frequency: { type: 'int', optional: true },
      created_at: 'date',
      updated_at: 'date',
      favicon: 'string?'
    }
  }
}

/** 查询参数 */
export interface QueryBookmarkItemParams {
  keyword?: string
  folder_id?: string | null
  page?: number
  pageSize?: number
  sortBy?: 'created_at' | 'updated_at' | 'title' | 'sort'
  sortOrder?: 'asc' | 'desc'
}

/** 通用数据库结果包装 */
export interface DatabaseResult<T = unknown> {
  success: boolean
  data?: T
  message?: string
}
